package com.lingxu.base.system.manage.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.lingxu.base.common.api.vo.Result;
import com.lingxu.base.system.manage.entity.SysUser;
import com.lingxu.base.system.manage.entity.TSysUser;
import com.lingxu.base.system.manage.model.UserParamDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Description: 用户信息
 * @Author: LingXu
 * @Date:   2021-01-04
 * @Version: V1.0.1
 */
public interface ISysUserService extends IService<SysUser> {
    /**
     * 用户信息-分页列表查询
     * @param page 分页信息
     * @param sysUserOption 用户信息
     * @return 用户信息列表
     */
    IPage<SysUser> queryPageList(Page<SysUser> page, SysUser sysUserOption);

    /**
     * 用户信息-列表查询
     * @param sysUser 用户信息
     * @return 用户信息列表
     */
    List<SysUser> queryList( SysUser sysUser);

    /**
     * 通过用户查询角色
     * @param roleId
     * @param flag
     * @return
     */
    List<SysUser> getRoleUserList(String roleId,Integer flag);

    /**
     * 根据用户名查询用户信息
     * @param userName 用户名
     * @return 用户信息
     */
    SysUser getByName(String userName,String flag);
    /**
     * 修改密码
     * @param userName
     * @param oldPassword
     * @param password
     * @param confirmPassword
     * @return
     */
    Result<?> updatePassword(String userName, String oldPassword, String password, String confirmPassword);

    /**
     * 通过id查询
     * @param id
     * @return
     */
    Result<?> getOneById(String id);

    Result<?> addOne(UserParamDto dto);

    Result<?> editOne(UserParamDto dto);

    Result<?> deleteBatch(List<String> idList,String content);


    /**
     * @Author ysj闫世杰
     * @Description 一周内未修改密码提示
     * @Date 2022/4/12 16:17
     * @Param: userId
     * @return com.lingxu.base.common.api.vo.Result
     **/
    Result findNotModifyPassWordByWeek(String userId);

    /**
     * @Author ysj闫世杰
     * @Description 强制修改密码
     * @Date 2022/7/6 15:30
     * @Param: userId
     * @return com.lingxu.base.common.api.vo.Result
     **/
//    Result findDefaultPwd(String userId);

    Result<?> edit(SysUser sysUser);

    void updateIsUse(String id, String isuse);

    Result<?> queryByDeptid(String deptid);

    List<SysUser> queryListByDeptid(String id);

    String findRoleId(String id);

    void insertTSysUser(TSysUser tSysUser);

    void deleteUserByName(String ename);

    void updateTSysUser(@Param("id") String id,@Param("passwordEncode") String passwordEncode);

    Integer findExistModelsOrData(String userId);
}
